package ma.myschool.app.dao;

import java.util.List;

import ma.myschool.app.model.AnneeScolaire;
import ma.myschool.app.model.MoisPaye;
import ma.myschool.app.model.Paiement;

/**
 * User Data Access Object (GenericDao) interface.
 *
 * @author <a href="mailto:matt@raibledesigns.com">Matt Raible</a>
 */
public interface PaiementDao extends GenericDao<Paiement, Long> {

	List<Paiement> loadPaiementsByEleve(Long idEleve, AnneeScolaire anneeScolaire);

	List<Paiement> loadPaiementsWithResteByEleve(Long id);

	Number sumAvancePaiements(AnneeScolaire anneeScolaire);

	Number sumAvancePaimentParMois(MoisPaye moisPaye, AnneeScolaire anneeScolaire);

	Number sumRestePaimentParMois(MoisPaye moisPaye, AnneeScolaire anneeScolaire);

	Number sumAllPaiementsPrevu();

	Number sumAllRestePaiement(AnneeScolaire anneeScolaire);
    
}
